package com.atguigu.java.ai.langchain4j.config;

import com.atguigu.java.ai.langchain4j.store.MongoChatMemoryStore;
import dev.langchain4j.memory.chat.ChatMemoryProvider;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.store.memory.chat.InMemoryChatMemoryStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SeparateChatAssistantConfig {
    @Autowired
    private MongoChatMemoryStore mongoChatMemoryStore;
    /**
     * 创建并配置ChatMemoryProvider的Bean
     *
     * 此方法定义了一个Bean，用于提供聊天记忆功能，该聊天记忆功能基于内存存储，
     * 并限制了消息窗口的最大消息数量
     *
     * @return ChatMemoryProvider实例，用于提供聊天记忆功能
     */
    @Bean
    ChatMemoryProvider chatMemoryProvider() {
        return memoryId -> MessageWindowChatMemory.builder() //创建一个消息窗口聊天记忆
                .id(memoryId) //设置聊天记忆的ID
                .maxMessages(10) //设置消息窗口的最大消息数量
//                .chatMemoryStore(new InMemoryChatMemoryStore()) //设置聊天记忆存储器，这里使用InMemoryChatMemoryStore，即基于内存存储的聊天记忆存储器
                .chatMemoryStore(mongoChatMemoryStore)
                .build();
    }
}